// 导入Three.js的3D对象相关模块
import {
  Mesh,            // 网格对象（几何体+材质的组合）
  MeshNormalMaterial, // 显示法向量的标准材质
  MeshStandardMaterial, // PBR标准材质
  SphereGeometry,  // 球体几何体
} from 'three'

// 导入自定义的Entity基类
import Entity from './Entity'

// 创建球体几何体（半径0.3，经纬分段数各20）
const GEOMETRY = new SphereGeometry(0.3, 20, 20)
// 创建标准材质并设置基础颜色为紫色（#614bdd）
const MATERIAL = new MeshStandardMaterial({
  color: 0x614bdd,
})

// 定义Candy类，继承自Entity基类
export default class Candy extends Entity {
  constructor(resolution, color) {
    // 创建网格对象（使用共享的几何体和材质）
    const mesh = new Mesh(GEOMETRY, MATERIAL)
    
    // 调用父类Entity的构造函数
    super(mesh, resolution)  // 假设Entity处理了场景添加、位置初始化等

    // 如果有传入颜色参数，则覆盖材质的默认颜色
    // 注意：这里会修改共享材质，影响所有Candy实例！
    if (color) {
      MATERIAL.color.set(color)
    }

    // 生成随机点数（1-3点）
    this.points = Math.floor(Math.random() * 3) + 1
    
    // 根据点数设置缩放比例：点数越多，糖果越大
    // 基础缩放0.5 + (点数*0.5)/3 → 范围在0.5~1.0之间
    this.mesh.scale.setScalar(0.5 + (this.points * 0.5) / 3)
  }
}